WebClient এবং RestTemplate এর মাধ্যমে Asynchronous Request করা

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) Synchronous এবং Asynchronous Request Handling |
51
51

WebClient এর মাধ্যমে Asynchronous Request:

WebClient হলো Spring WebFlux-এর একটি অংশ, যা নন-ব্লকিং এবং রিঅ্যাক্টিভ প্রোগ্রামিং সমর্থন করে। এটি asynchronous request তৈরি করতে ব্যবহৃত হয়।

WebClient এর মাধ্যমে Asynchronous Request এর উদাহরণ:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

@RestController
public class WebClientAsyncController {

    private final WebClient webClient;

    public WebClientAsyncController(WebClient.Builder builder) {
        this.webClient = builder.baseUrl("https://jsonplaceholder.typicode.com").build();
    }

    @GetMapping("/async-webclient")
    public Mono<String> fetchAsyncData() {
        return webClient.get()
                        .uri("/posts/1")
                        .retrieve()
                        .bodyToMono(String.class); // Asynchronous response
    }
}

ব্যাখ্যা:

  1. Mono<String> একটি Reactive স্ট্রিম, যা ডেটা পাওয়ার পর একটি একক ভ্যালু প্রদান করে।
  2. retrieve() মেথডটি সার্ভার থেকে ডেটা রিসিভ করে।
  3. bodyToMono(String.class) ডেটাকে asynchronous পদ্ধতিতে প্রক্রিয়াজাত করে।

RestTemplate এর মাধ্যমে Asynchronous Request:

RestTemplate নিজে ব্লকিং I/O-এর জন্য ডিজাইন করা, তবে Spring এর AsyncRestTemplate (যা Spring 5 থেকে Deprecated) ব্যবহার করে asynchronous request তৈরি করা সম্ভব। এর বাইরেও Java CompletableFuture ব্যবহার করে RestTemplate এর মাধ্যমে asynchronous request করা যায়।

CompletableFuture ব্যবহার করে Asynchronous Request এর উদাহরণ:

import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.concurrent.CompletableFuture;

@RestController
public class RestTemplateAsyncController {

    private final RestTemplate restTemplate;

    public RestTemplateAsyncController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @Async
    @GetMapping("/async-resttemplate")
    public CompletableFuture<String> fetchAsyncData() {
        return CompletableFuture.supplyAsync(() -> {
            String url = "https://jsonplaceholder.typicode.com/posts/1";
            ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
            return response.getBody();
        });
    }
}

ব্যাখ্যা:

  1. @Async:
    • এই অ্যানোটেশনটি Spring-কে জানায় যে, এটি একটি asynchronous মেথড।
  2. CompletableFuture:
    • Java 8 এর ফিচার, যা asynchronous প্রোগ্রামিং সমর্থন করে।
  3. supplyAsync():
    • এটি একটি ব্যাকগ্রাউন্ড থ্রেডে asynchronous কাজ সম্পন্ন করে।

WebClient বনাম RestTemplate এর মাধ্যমে Asynchronous Request:

ফিচারWebClientRestTemplate + CompletableFuture
ব্লকিং বা নন-ব্লকিংসম্পূর্ণ নন-ব্লকিং।মূলত ব্লকিং, তবে CompletableFuture দিয়ে নন-ব্লকিং করা যায়।
Reactive ProgrammingReactive Streams (Mono এবং Flux) সমর্থন করে।Reactive Programming সমর্থন করে না।
ব্যবহার সহজতাWebClient দিয়ে Asynchronous Request সহজ।CompletableFuture ব্যবহারে কোড একটু বেশি জটিল।
পারফরম্যান্সকনকারেন্ট রিকোয়েস্টে পারফরম্যান্স অনেক ভালো।তুলনামূলকভাবে কম।
Spring FutureSpring WebFlux-এর অংশ।Spring MVC-এর অংশ।

উপসংহার

  • WebClient হল Spring Boot-এ asynchronous এবং non-blocking request-এর জন্য সেরা পছন্দ। এটি reactive এবং modern অ্যাপ্লিকেশনের জন্য কার্যকর।
  • RestTemplate ব্লকিং মডেল হলেও CompletableFuture ব্যবহার করে asynchronous request করা যায়। তবে এটি তুলনামূলকভাবে পুরোনো পদ্ধতি।
  • নতুন প্রজেক্টে WebClient ব্যবহার করার পরামর্শ দেওয়া হয়, বিশেষত যদি আপনার অ্যাপ্লিকেশন reactive এবং high-concurrency সমর্থন করে।
Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion